package lang4j.parser.generated;
//meta2 now!

import lang4j.parser.Position;
import lang4j.parser.ParsedEntity;
                              
public class ConstructorProduction  implements TypeProduction,ParsedEntity {

// Attributes
    private String name;
        private String keyField;
        private boolean keyFieldIsSet;
        private java.util.List<ProductionFactor> factors;
    
    Position mStart;
    Position mEnd;

    public ConstructorProduction(){
    }

    public Position mGetStart(){
        return mStart;
    }
    public Position mGetEnd(){
        return mEnd;
    }

    public void mSetStart(Position start){
        this.mStart=start;
    }

    public void mSetEnd(Position end){
      this.mEnd=end;
    }


// Accessors ******************************************************************

    public String getName(){
        return name;
    }

    public void setName(String name){
        this.name=name;
    }

    public String getKeyField(){
        return keyField;
    }

    public void setKeyField(String keyField){
        keyFieldIsSet=true;
        this.keyField=keyField;
    }

    /** returns whether this attribute has been set */
    public boolean hasKeyField(){
        return keyFieldIsSet;
    }
    public java.util.List<ProductionFactor> getFactors(){
        return factors;
    }

    public void setFactors(java.util.List<ProductionFactor> factors){
        this.factors=factors;
    }


// Acceptors ******************************************************************
    public void accept(TypeProductionVisitor visitor){
        visitor.visitConstructorProduction(this);
    }
    public void accept(ProductionVisitor visitor){
        visitor.visitTypeProduction(this);
    }


// Transformers ******************************************************************
    public <T> T transform(TypeProductionTransformer<T> transformer){
        return transformer.transformConstructorProduction(this);
    }
    public <T> T transform(ProductionTransformer<T> transformer){
        return transformer.transformTypeProduction(this);
    }


// Property based type identification ****************************************

    public boolean isConstructorProduction(){
        return true;
    }
}